/* 基于堆栈的队列 */

#include "queue_base_stack.h"

/* 创建 */
QUEUE* queue_create (void) 
{
	QUEUE* queue = malloc (sizeof (QUEUE));
	queue->istack = stack_create ();
	queue->ostack = stack_create ();
	return queue;
}

/* 销毁 */
void queue_destroy (QUEUE* queue)
{
	stack_destroy (queue->ostack);
	stack_destroy (queue->istack);
	free (queue);
}

/* 压入 */
void queue_push (QUEUE* queue, int data) 
{
	stack_push (queue->istack, data);
}

/* 弹出 */
int queue_pop (QUEUE* queue) 
{
	if (stack_empty (queue->ostack))
        {
		while (! stack_empty (queue->istack))
                {
			stack_push (queue->ostack, stack_pop (queue->istack));
                }
        }
	return stack_pop (queue->ostack);
}


/* 清空 */
void queue_clear (QUEUE* queue)
{
	stack_clear (queue->istack);
	stack_clear (queue->ostack);
}

/* 大小 */
int queue_size (QUEUE* queue) 
{
	return 0;
}

/* 判空 */
int queue_empty (QUEUE* queue) 
{
	if(stack_empty (queue->istack) && stack_empty (queue->ostack))
        {
            return 1;
        }

        return 0;
}
